package com.sg.dto.integration.framework;

import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Objects;

@Data
public class OrgDto extends BaseDto implements Serializable {

    /**
     * 组织ID:
     */
    @ApiModelProperty("组织ID")
    private String organizationId;

    /**
     * 组织标识:
     */
    @ApiModelProperty("组织标识")
    private String organizationCode;

    /**
     * 组织编号:
     */
    @ApiModelProperty("组织编号")
    private String organizationNumber;

    /**
     * 组织名称:
     */
    @ApiModelProperty("组织名称")
    private String organizationName;

    /**
     * 是否最高组织:
     */
    @ApiModelProperty("是否最高组织")
    private String isHighOrg;

    /**
     * 空间组织架构模式:
     */
    @ApiModelProperty("空间组织架构模式")
    private String orgStructureModel;

    /**
     * 是否开启系统对接:
     */
    @ApiModelProperty("是否开启系统对接")
    private String isIntergration;

    /**
     * 是否启用流程审批:
     */
    @ApiModelProperty("是否启用流程审批")
    private String isOpenApprovalProcess;

    /**
     * 是否允许导入:
     */
    @ApiModelProperty("是否允许导入")
    private String isAllowImport;

    /**
     * 是否冻结:
     */
    @ApiModelProperty("是否冻结")
    private String status;

    /**
     * 创建于空间ID:
     */
    @ApiModelProperty("创建于空间ID")
    private String spaceId;

    /**
     * 创建于联盟应用ID:
     */
    @ApiModelProperty("创建于联盟应用ID")
    private String appId;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        OrgDto that = (OrgDto) o;
        return (
                organizationId == that.organizationId &&
                        organizationCode == that.organizationCode &&
                        organizationNumber == that.organizationNumber &&
                        organizationName == that.organizationName &&
                        isHighOrg == that.isHighOrg &&
                        orgStructureModel == that.orgStructureModel &&
                        isIntergration == that.isIntergration &&
                        isOpenApprovalProcess == that.isOpenApprovalProcess &&
                        isAllowImport == that.isAllowImport &&
                        status == that.status &&
                        spaceId == that.spaceId &&
                        appId == that.appId
        );
    }

    @Override
    public int hashCode() {
        return Objects.hash(
                super.hashCode(),
                organizationId,
                organizationCode,
                organizationNumber,
                organizationName,
                isHighOrg,
                orgStructureModel,
                isIntergration,
                isOpenApprovalProcess,
                isAllowImport,
                status,
                spaceId,
                appId
        );
    }
}
